Modelo de solicitud de clave OTP
Este modelo de mensaje se utiliza para solicitar la clave OTP que, una vez validada, autoriza el inicio de la transacción. La solicitud de la OTP es el primer paso para confirmar la identidad del usuario y garantizar que el proceso de pago o cualquier otra acción sensible sea seguro y esté autorizado.
Al iniciar una transacción, el orden de los campos en el mensaje no afecta la funcionalidad de la API. Lo importante es asegurar que los campos tengan la longitud y el tipo de dato correcto para que la solicitud se procese correctamente.
info
Al iniciar la transacción, el orden de los campos es indiferente para el API. Solo ten en cuenta la longitud de los campos y que coloques el tipo de dato de forma correcta.
Objeto en formato JSON
Endpoint solicitud de clave OTP
POST /api/v1/request/otp
{
"creditor_account": {
"bank_code": "0001",
"type": "CNTA",
"number": "00014567890123456789"
},
"debitor_document_info": {
"type": "V",
"number": "123456789"
},
"debitor_account": {
"bank_code": "0001",
"type": "CELE",
"number": "04141234567"
},
"amount": {
"amt": 5,
"currency": "VES"
}
}
Cargando datos...
Atributos
- C#
- Java
class OTP{
static String BASE_URL = "https://pruebas.api.sypago.net";
static String TOKEN_PATH = "/api/v1/auth/token";
static String OTP_PATH = "/api/v1/request/otp";
static String CTA = "00015678901234567890";
static SocketsHttpHandler shHandler;
static async Task Main(string[] args)
{
shHandler = new SocketsHttpHandler
{
MaxConnectionsPerServer = 100,
PooledConnectionLifetime = TimeSpan.FromMinutes(10),
ConnectTimeout = TimeSpan.FromSeconds(200),
PooledConnectionIdleTimeout = TimeSpan.FromSeconds(5),
ResponseDrainTimeout = TimeSpan.FromSeconds(5),
};
HttpClient? cliente;
cliente = new HttpClient(shHandler);
cliente.BaseAddress = new Uri(BASE_URL);
string body = "{"client_id":"user_name","secret":"api_key"}";
var contenido = new StringContent(body, Encoding.UTF8, "application/json");
var respuesta = await cliente.PostAsync(TOKEN_PATH, contenido);
var resultado = await respuesta.Content.ReadAsStringAsync();
JsonDocument jsonDoc = JsonDocument.Parse(resultado);
string accessToken = jsonDoc.RootElement.GetProperty("access_token").GetString();
//Console.WriteLine(accessToken);
var internal_id = new Random().Next(1, 999999).ToString("000000") + new Random().Next(1, 999999).ToString("000000");
var group_id = new Random().Next(1, 999999).ToString("000000") + new Random().Next(1, 999999).ToString("000000");
body = "{"creditor_account": {"bank_code": "0001","type": "CNTA","number": "" + CTA + ""},"debitor_document_info": {"type": "V","number": "21290681"},"debitor_account": {"bank_code": "0102","type": "CELE","number": "" + "04140121871" + ""},"amount": {"amt": 5,"currency": "VES"}}";
cliente.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);
contenido = new StringContent(body, Encoding.UTF8, "application/json");
respuesta = await cliente.PostAsync(OTP_PATH, contenido);
resultado = await respuesta.Content.ReadAsStringAsync();
//jsonDoc = JsonDocument.Parse(resultado);
//string transaction_id = jsonDoc.RootElement.GetProperty("transaction_id").GetString();
Console.WriteLine(resultado);
}
}
public class OTP {
static String BASE_URL = "https://pruebas.api.sypago.net";
static String OTP_PATH = "/api/v1/request/otp";
static String cuenta = "00015678901234567890";
static String cel = "04141234567";
static String token = "access_token";
// Cliente Http
public static final MediaType JSON = MediaType.get("application/json");
OkHttpClient client = new OkHttpClient();
public static void main(String[] args) throws IOException {
SypagoDocum sypago = new SypagoDocum();
String OTP ="""
{
"creditor_account": {
"bank_code": "0001",
"type": "CNTA",
"number": "12345678901234567890"
},
"debitor_document_info": {
"type": "V",
"number": "4121234567"
},
"debitor_account": {
"bank_code": "0102",
"type": "CELE",
"number": "4121234567"
},
"amount": {
"amt": 5,
"currency": "VES"
}
}
""".formatted(cuenta, cel);
var resp = sypago.getOTP(BASE_URL+OTP_PATH, OTP, token);
System.out.println(resp);
}
/**
* Metodo para invocar al servicio en Sypago
* @param url URL del servicio
* @param json Datos en formato JSON del servicio
* @return String con el TOKEN suministrado por el ecosistema de Sypago.
* @throws java.io.IOException
*/
public String getOTP(String url, String json, String token) throws IOException {
RequestBody body = RequestBody.create(json, JSON);
Request request = new Request.Builder()
.url(url)
.addHeader("Authorization", "Bearer " + token)
.post(body)
.build();
try (Response response = client.newCall(request).execute()) {
response.code();
return response.body().string();
}
}
}